#pragma once
#include<stdio.h>
#include<stdbool.h>
#include<assert.h>
#include<stdlib.h>
typedef int HPDataType;
typedef struct Heap
{
	HPDataType* _a;
	int _size;
	int _capacity;
}Heap;
//堆的初始化
void HeapInit(Heap* php);
// 堆的销毁
void HeapDestory(Heap* hp);
// 堆的插入
void HeapPush(Heap* hp, HPDataType x);
// 堆的删除
void HeapPop(Heap* hp);
// 取堆顶的数据
HPDataType HeapTop(Heap* hp);
// 堆的数据个数
int HeapSize(Heap* hp);
// 堆的判空
int HeapEmpty(Heap* hp);
void Swap(int* a, int* b);
void Adjustup(Heap* hp, int child);
void Adjustdown(Heap* hp,int parent);
// 对数组进行堆排序
void HeapSort(int* a, int n);
//解决TOPk问题，从n个数中找出前k个最大（小）的数
void CreateNDate();
void PrintTopK(int k);